Also, hallo und willkommen heute zum letzten, ja zweiten Teil vom Themengebiet
Fehler-tolerante verteilte Systeme oder überhaupt Betrachtung von Fehler-Situationen
in verteilten Systemen und die Basis für das, was wir jetzt in der Woche und auch nächste Woche
uns anschauen wollen, sind eine Reihe von Algorithmen,
ich habe keine Maus, naja egal, eine Reihe von Algorithmen für verteilte Systeme und
letztlich deren formale Beschreibung, die dann eben als Grundlage für Fehler-tolerante Programme
verwendet werden können. Und im Wesentlichen geht es jetzt hier um folgende Themen, also erstmal
werden wir noch mal ein paar Grundbegriffe betrachten, also die Grundbegriffe, die genutzt
werden, um eben solche Algorithmen zu beschreiben. Solche Sachen wie Prozesse, Verbindungen, Fehler,
Korrektheit, dann die wesentlichen Grundlagen für die Beschreibung verteilter Algorithmen,
also auch diese Notation, um die es da geht und ja so ein Modernisierungskonzept, wo in dem eben
einzelne Komponenten über Ereignisse letztendlich miteinander kommunizieren. Ganz kurz noch mal ein
paar Worte zum Zeitbegriff und Raumzeitbegriff an der Stelle und wie das notiert wird. Und dann
geht es um ein paar grundlegende Systemeigenschaften, die dann auch die Grundlagen für die weiteren
Algorithmen sind. Also einfach mal um die Eigenschaften von Punkt-zu-Punkt-Verbindung,
weil die Kommunikation, also eine grundlegende Art der Kommunikation sind Punkt-zu-Punkt-Verbindungen
und auf der Basis von solchen Punkt-zu-Punkt-Verbindungen kann man natürlich dann beliebig
komplexe Arten der Interaktion dann aufbauen, also eben Multicast, Broadcast und so weiter.
Ein paar Worte noch mal zu den Begriffen Synchrone und Asynchronesysteme und man muss
es noch mal ein bisschen mehr präzisieren. Wir haben darüber schon immer wieder mal gesprochen,
über Synchrone Kommunikation, Asynchrone Kommunikation, aber das letztendlich dann doch
immer ein bisschen vage betrachtet und das müssen wir uns noch mal ein bisschen genauer
anschauen. Und dann geht es um einige Basisabstraktionen im verteilten System, also zum Beispiel Ausfallerkennung,
Wahl eines Anführers und dann eben um komplexere Kommunikationsmechanismen wie vor allem Multicast,
zuverlässige Multicasts, Ordnung von Nachrichten in der Multicast und das ist dann auch die Basis
für das, was wir jetzt dann in den Übungen ab dieser Woche im Endeffekt dann in der fünften
Aufgabe ist, glaube ich, dann machen werden. So, noch mal so ein paar grundlegende Begriffe
bei diesen verteilten Systemen. Interagieren ja irgendwelche Einheiten, Entities miteinander
und diese Einheiten nennen wir jetzt in dem Kontext, in dem es jetzt hier geht, im weiteren
Prozesse. Das sind, hinter so einem Prozess kann sich jetzt also ein ganzer Knoten verbergen,
also ein Knoten im verteilten System, das kann ein Rechner sein, das kann ein einzelner
Prozessor sein, das kann auch natürlich tatsächlich das, was wir im landläufigen Kontext von
Unix oder sowas als Prozess betrachten sein. Eine weitere Unterscheidung brauchen wir an
dieser Stelle nicht machen, ist das letztendlich eine kommunizierende Einheit. Das ist das
Wesentliche und es ist so eine auch aktive Instanz im verteilten System, die eben auch
mit anderen solchen Instanzen durch letztendlich Nachrichten aus dem Tausch miteinander in
Verbindung tritt und irgendwie interagiert. Diese Prozesse, über die wir reden, sind
eindeutig identifizierbar. Sie bekommen eine Nummer irgendwie oder einen Identifikator.
In den Algorithmen, die wir im weiteren beschreiben, sind es häufig solche Buchstaben wie P, Q,
L und S oder sowas. Manchmal wird es in der Literatur dann auch als P1, P2, P3 bezeichnet,
also jedenfalls irgendwie eindeutig identifizierbare Einheiten. In manchen Situationen ist es
wichtig, dass man eine Reihenfolge auf solchen Prozessen definiert und dann ist es also wichtig,
dass man sie irgendwie eben aufsteigend nummeriert, monoton aufsteigend nummeriert. Gut, dann
ist für unser System wichtig, insgesamt der Zustand. Wenn man den globalen Zustand in
unserem verteilten System betrachtet, dann ist es letztendlich, also der globale Zustand
besteht letztendlich aus dem verteilten Zustand im System und man kann ihn letztendlich als
Vektor S bezeichnen mit den Zuständen S1 bis Sn, der n im System vorhandenen. Prozesse
kann man jetzt auch sagen, weil ja die Einheiten, über die wir reden, eben Prozesse sind. Und
ein Schritt im Ablauf in unserem System ist letztendlich der atomare Übergang von einem
Zustand in den Folgezustand. Das werden wir dann irgendwann später noch brauchen. So,
Presenters
Zugänglich über
Offener Zugang
Dauer
00:35:48 Min
Aufnahmedatum
2012-06-25
Hochgeladen am
2019-05-08 05:39:02
Sprache
de-DE
- Übersicht und Grundlagen verteilter Systeme
-
Verteilte Programmierung, Client/Server-Konzept
-
Kommunikation, Prozesse, Namensgebung
-
Koordinierung, Konsistenzwahrung
-
Grundlagen verteilter Algorithmen
-
Zeit in verteilten Systemen (logische Uhren, NTP)
-
Java, weiterführende Konzepte (z.B. Threads, Reflections)
-
Sun RPC, Java RMI
-
Dynamische Erzeugung von Proxies, Callback
Lernziele und Kompetenzen:
Die Studierenden
-
erwerben fundierte Kenntnisse über Grundlagen von verteilten Systemen
-
verstehen Zusammenhänge, die die verteilte Ausführung von Programmen in vernetzten Rechensystemen ermöglichen
-
erlernen die verteilte Programmierung in Java
-
entwickeln eine Middleware-Plattform zur Ausführung verteilter Programme